Clojure: エディターからREPLに接続する
Clojureに入門した時、僕には「エディターからREPLに接続する」という言葉の意味が全然わからなかった。けっこうな期間わからなかったので、今の理解をまとめておく。
誰か僕と同じような境遇の人の助けになれば嬉しい。
といっても、実際には言葉通りのことしか説明できない。
Clojure開発において、エディターはREPLに接続して式を送信することができるのだ。
僕がこの言葉に混乱したのは、今までの「エディター」と「REPL」という言葉の定義から大きく異なることが書かれているからだったと思う。
だって普通エディターは文字を書く場所で、REPLと接続するものではない。そしてREPLはちょっとしたコードを書いて動かしてみる場所で、どこからともなくコードを送り込まれる場所ではないからだ。
でも単に言葉の定義が変わるだけだ。Clojure開発において、エディターはREPLと接続できる場所だ。そしてREPLはどこからともなくコードを送り込まれる場所だ。
卑近な例だとrails consoleと感覚が似ているかもしれない。
あれは「接続」とはちょっと違うが、エディターで書いたコードをREPLからreload!することで読み込み、REPLで動かしてみることができる。あれは良いワークフローだ。エディターをREPLに接続して行う開発、いわゆるREPL駆動開発は超すごいrails consoleみたいなものだと思っておいても、あまり外れてはいないと思う。
しかしrails consoleはRuby on railsの独自機構だがClojureのREPL駆動開発は言語レベルで採用されている開発ワークフローだ。これはLisp系言語であるClojureの長所の一つだと言える。
小さなライブラリを書くときでも大きなWebアプリケーションを書くときでも同様にREPLを使って自分の書いた式に対してフィードバックを得られるのだ。
具体的にどんな風にやるのかはVSCodeでClojureのREPL駆動開発を体験するを試してみるとよい。